// 统计数据相关的API函数
import axios from 'axios';

// 获取统计数据
export const getStatisticData = async () => {
  try {
    // 由于是模拟环境，我们返回模拟数据
    // 在实际项目中，这里应该调用真实的API接口
    /*
    const response = await axios.get('/api/statistics/health-data');
    return response.data;
    */
    
    // 从Excel文件获取真实数据
    const response = await fetch('/健康检查数据集.xlsx');
    if (!response.ok) {
      throw new Error('Failed to fetch Excel data');
    }
    const arrayBuffer = await response.arrayBuffer();
    const workbook = XLSX.read(arrayBuffer, { type: 'array' });
    const sheetName = workbook.SheetNames[0];
    const worksheet = workbook.Sheets[sheetName];
    const jsonData = XLSX.utils.sheet_to_json(worksheet);

    // 处理血压数据 (按年龄组计算平均收缩压)
    const ageGroups = [...new Set(jsonData.map(item => item.AgeGroup))].sort();
    const bloodPressureData = ageGroups.map(group => {
      const groupData = jsonData.filter(item => item.AgeGroup === group);
      const avgApHi = groupData.reduce((sum, item) => sum + item.ap_hi, 0) / groupData.length;
      return { name: group, value: Math.round(avgApHi) };
    });

    // 处理健康状态数据
    const healthStatusData = [
      { name: '健康', value: jsonData.filter(item => item.cardio === 0).length },
      { name: '异常', value: jsonData.filter(item => item.cardio === 1).length }
    ];

    // 处理年龄分布数据
    const ageDistributionData = ageGroups.map(group => ({
      name: group,
      value: jsonData.filter(item => item.AgeGroup === group).length
    }));

    // 处理风险因素数据
    const riskFactorsData = [
      { name: '高血压', value: jsonData.filter(item => item.ap_hi > 140).length },
      { name: '高血脂', value: jsonData.filter(item => item.cholesterol > 1).length },
      { name: '高血糖', value: jsonData.filter(item => item.gluc > 1).length },
      { name: '吸烟', value: jsonData.filter(item => item.smoke === 1).length },
      { name: '饮酒', value: jsonData.filter(item => item.alco === 1).length }
    ];

    // 汇总统计数据
    return {
      bloodPressureData,
      healthStatusData,
      ageDistributionData,
      riskFactorsData,
      totalUsers: jsonData.length,
      abnormalCases: jsonData.filter(item => item.cardio === 1).length,
      averageAge: Math.round(jsonData.reduce((sum, item) => sum + item.AgeinYr, 0) / jsonData.length),
      updateTime: new Date().toLocaleString('zh-CN')
    };

  } catch (error) {
    console.error('获取统计数据失败:', error);
    throw error;
  }
};

// 获取Excel数据的模拟函数（实际项目中可能不需要这个，直接通过XLSX读取文件）
export const getExcelData = async () => {
  try {
    // 在实际项目中，这里可能需要调用API获取Excel文件URL或数据
    return {
      success: true,
      message: 'Excel数据获取成功'
    };
  } catch (error) {
    console.error('获取Excel数据失败:', error);
    throw error;
  }
};